<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class M_Pago extends Modelo {

    public $id = null;
    public $bancoId;
    public $conceptoId;
    public $nroCptePago;
    public $nroCheque;
    public $moneda;
    public $importe;
    public $beneficiario;
    public $fecha;
    public $cancelado;

    function __construct() {
        parent::__construct();
        $this->tabla = 'pagos';
    }

    function setAttributes($datos = array(), $tipo = 'object') {
        return parent::_setAttributes(__CLASS__, $datos, $tipo);
    }

    function doArray() {
        return parent::_doArray(__CLASS__);
    }

    /**
     * Devuelve valores por defecto en un arreglo.
     * 
     */
    function getValidacion($importe = '') {
        $valid = array(
            array('field' => 'bancoId', 'label' => 'Banco', 'rules' => 'trim|required'),
            array('field' => 'conceptoId', 'label' => 'Concepto', 'rules' => 'trim|required'),
            array('field' => 'nroCptePago', 'label' => 'Número de comprobante de págo', 'rules' => 'trim|required'),
            array('field' => 'nroCheque', 'label' => 'Número de cheque', 'rules' => 'trim|required'),
            array('field' => 'moneda', 'label' => 'Moneda', 'rules' => 'trim|required'),
            array('field' => 'importe', 'label' => 'Importe', 'rules' => 'trim|money' . $importe),
            array('field' => 'beneficiario', 'label' => 'Beneficiario', 'rules' => 'trim|required'),
            array('field' => 'fecha', 'label' => 'Fecha', 'rules' => 'trim|required'),
        );

        return $valid;
    }

    /**
     * Devuelve valores por defecto en un arreglo.
     */
    function valoresPorDefecto() {
        return array(
            'bancoId' => '',
            'conceptoId' => '',
            'nroCptePago' => '',
            'nroCheque' => '',
            'moneda' => 'Peso',
            'importe' => '',
            'beneficiario' => '',
            'fecha' => gmdate('d/m/Y'),
            'cancelado' => 0,
        );
    }

    /**
     * 
     */
    function getPagosXFechas($fechaDesde, $fechaHasta, $cancelado) {
        $select =
                $this->tabla . '.*,
                bancos.nombre banco,  
                bancos.sucursal,  
                bancos.nroCuenta,  
                conceptos.nombre concepto 
        ';
        $this->db->select($select);
        $this->db->from($this->tabla);
        $this->db->join('bancos', 'bancos.id = ' . $this->tabla . '.bancoId');
        $this->db->join('conceptos', 'conceptos.id = ' . $this->tabla . '.conceptoId');
        $this->db->where('fecha >=', normal_to_database_date($fechaDesde));
        $this->db->where('fecha <=', normal_to_database_date($fechaHasta));
        $this->db->where('cancelado', $cancelado);

        $results = $this->db->get();

        return $results->result_object();
    }

    function getPago($id) {
        $select =
                'subsidios.*,
                causas.id causaId,
                medicos.matricula,
                medicos.numeroDoc,
                medicos.nombre,
                caratulas.nombre caratula,
                caratulas.nroExpediente,
                caratulas.juzgado,
                caratulas.fiscalia,
                pagos.nroCptePago,
                pagos.nroCheque,
                pagos.moneda,
                pagos.importe totalimporte,
                pagos.beneficiario,
                bancos.nombre banco,  
                bancos.sucursal,  
                bancos.nroCuenta,  
                conceptos.nombre concepto 
                ';
        $this->db->select($select);
        $this->db->from('subsidios');
        $this->db->join('pagos', 'pagos.id = subsidios.pagoId');
        $this->db->join('demandados', 'demandados.id = subsidios.demandadoId');
        $this->db->join('medicos', 'demandados.matricula = medicos.matricula');
        $this->db->join('bancos', 'bancos.id = pagos.bancoId');
        $this->db->join('conceptos', 'conceptos.id = pagos.conceptoId');
        $this->db->join('causas', 'causas.id = demandados.causaId');
        $this->db->join('caratulas', 'caratulas.causaId = causas.id');
        $this->db->where('caratulas.id in (
                                            SELECT max(ssap_caratulas.id) 
                                            FROM ssap_caratulas 
                                            JOIN ssap_causas c
                                            ON c.id = ssap_caratulas.causaId 
                                            WHERE ssap_causas.id = c.id
                                            )');
        $this->db->where('subsidios.pagoId', $id);

        $results = $this->db->get();

        $results = $results->result_object();

        return $results;
    }

}